/*
2021-8-5
https://www.acwing.com/problem/content/198/
*/
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;
typedef long long ll;
const int N=1000010;
int primes[N],cnt;
bool st[N];

void init(int n)
{
    memset(st,0,sizeof st);
    cnt=0;
    for(int i=2;i<=n;i++)
    {
        if(!st[i]) primes[cnt++]=i;
        for(int j=0;primes[j]<=n/i;j++)
        {
            st[primes[j]*i]=true;
            if(i%primes[j]==0) break;
        }
    }
}

int main()
{
    int l,r;
    while(cin>>l>>r)
    {
        init(50000);
        memset(st,0,sizeof st);
        
        for(int i=0;i<cnt;i++)
        {
            ll p=primes[i];
            for(ll j=max(p*2,(l+p-1)/p*p);j<=r;j+=p)
            {
                st[j-l]=true;
            }
        }
        
        cnt=0;
        for(int i=0;i<=r-l;i++)
        {
            if(!st[i] && i+l!=1) primes[cnt++]=i+l;
        }
        
        if(cnt<2) puts("There are no adjacent primes.");
        else
        {
            int mind=0,maxd=0;
            for(int i=0;i+1<cnt;i++)
            {
                int d=primes[i+1]-primes[i];
                if(d<primes[mind+1]-primes[mind]) mind=i;
                if(d>primes[maxd+1]-primes[maxd]) maxd=i;
            }
            printf("%d,%d are closest, %d,%d are most distant.\n",primes[mind],primes[mind+1],primes[maxd],primes[maxd+1]);
        }
        
    }
    return 0;
}
